import threading
import time

# 共享列表和锁
output_list = []
lock = threading.Lock()

# 定义线程任务 1：打印数字 1 到 10，并将结果保存到共享列表
def print_numbers():
    for i in range(1, 11):
        with lock:  # 使用锁确保线程安全
            output_list.append(f"Number: {i}")
        time.sleep(0.5)  # 模拟耗时操作

# 定义线程任务 2：打印字母 A 到 J，并将结果保存到共享列表
def print_letters():
    for letter in 'ABCDEFGHIJ':
        with lock:  # 使用锁确保线程安全
            output_list.append(f"Letter: {letter}")
        time.sleep(0.5)  # 模拟耗时操作

# 主程序
if __name__ == "__main__":
    # 创建两个线程
    thread1 = threading.Thread(target=print_numbers)
    thread2 = threading.Thread(target=print_letters)

    # 启动线程
    thread1.start()
    thread2.start()

    # 等待两个线程都完成
    thread1.join()
    thread2.join()

    # 打印最终的输出列表
    print("All threads have finished. Final output:")
    for item in output_list:
        print(item)
